package com.atguigu.mvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

/**
 * @author 陆小根
 * date: 2022/04/27
 * Description:
 */
@Controller
//@RequestMapping("/hello")
/*
  @RequestMapping标识一个类：设置映射请求的请求路径的初始信息(使用在多一个请求中 比如user/list)
  @RequestMapping标识一个方法：设置影视业请求路径的具体信息
 */
public class RequestMappingController {

  // 此时请求映射所映射的请求的请求路径为: /test/testRequestMapping
  // @RequestMapping注解的method属性是一个RequestMethod类型的数组，表示该请求映射能够匹配多种情况方式的请求
  @RequestMapping(
          value = {"/testRequestMapping", "/test"},
          method = {RequestMethod.GET, RequestMethod.POST},
          params = {"username", "password!=123456"}
          // param：要求请求映射所匹配的请求必须携带param请求参数
          // !param: 要求请求映射所匹配的请求必须不能携带param请求参数
          // param=value: 要求请求映射所匹配的请求必须携带param请求参数且param=value
          // param!=value: 要求请求映射所匹配的请求必须携带param请求参数但是param!=value
  )
  public String success() {
    return "success";
  }

  @GetMapping("/testGetMapping")
  public String testMapping() {
    return "success";
  }


  @PostMapping("/testPostMapping")
  public String testPostMapping() {
    return "success";
  }

  @RequestMapping(value = "/testPut", method = RequestMethod.PUT)
  public String testPut() {
    return "success";
  }

  @RequestMapping(
          value = {"/testHeaders"},
          method = {RequestMethod.GET},
          params = {"username", "password"}, // 要求请求体中含有username和password参数
          headers = {"Host=localhost:8081"}
          /*当前请求满足@RequestMapping注解的value和method属性，但是不满足headers属性，此时显示404，即资源未找到*/
  )
  public String testParamsAndHeads() {
    return "success";
  }

  /*
  * ?:表示任意的单个字符
  * *:表示任意的0个或多个字符
  * **:表示任意的一层或多层目录(必须单独的写在两个"/"中,比如 /** / 才可以，不然就是单独的两个*)
  * */
//  @RequestMapping("/a?a/testAnt") // 可以匹配 /a1a/.... /aaa/...
//  @RequestMapping("/a*a/testAnt")
  @RequestMapping("/**/testAnt")
  public String testAnt() {
    return "success";
  }

  @RequestMapping("/testPath/{id}/{username}")
  public String testPath(@PathVariable("id") Integer id,
                         @PathVariable("username")String username) {
    System.err.println("id = " + id);
    System.err.println("username = " + username);
    return "success";
  }


}
